/**
 封装了能发Ajax请求的函数,向外暴露的是axios
 1. 解决了post请求携带参数的问题：默认是json需要转化成urlencode格式
 2. 让请求成功的结果不再是response而直接是response.data的值
 3. 统一处理所有请求的异常错误
 */
import axios from 'axios'
import {message} from 'antd'
import qs from 'qs'


// 添加请求拦截器:让post请求的请求体格式为urlencode格式
axios.interceptors.request.use(function (config) {
    // 得到请求方式和请求体数据
    const {method, data} = config
    // 处理post请求, 将data对象转化成query参数字符串
    if(method.toLowerCase() === 'post' && typeof data==='object') {
        config.data = qs.stringify(data)// username=admin&password=admin
    }

    return config;
  });

  // 添加一个响应拦截器
  // 功能1：让请求成功的结果不再是response而直接是response.data的值
  // 功能2：统一处理所有请求的异常错误
  // 在请求返回之后且在指定的请求回调函数之前
axios.interceptors.response.use(function (response) {
    
    return response.data;//这个返回的结果就会交给我们指定的请求响应的回调函数
  }, function (error) {//统一处理所有请求的异常错误
      message.error('请求出错' + error.message)
    //return Promise.reject(error);
    //返回一个pending状态的promise，中断promise链
    return new Promise(() => {})
  });

export default axios